package gestion_des_note;

import java.util.*;
import java.io.*;

public class Classe implements Serializable{
private String m_sFilier;
private int m_cGroup;
private int  m_sNombre;
  public Classe(String filier,int group,int nbrElve) {
    m_sFilier=filier;
    m_cGroup=group;
    m_sNombre=nbrElve;
  }

  public Classe(){	  
  }
 public static Vector glossaireEtudiant=new Vector();
 public static Vector glossaireFilier=new Vector();
  //Ajout d'un etudiant
  public void AjoutEtudiant(int matricule,String nom,String prenom ,String filier,int group,double not[]){
    glossaireEtudiant.addElement(new Etudiant(matricule,nom,prenom ,filier,group,not));
  }
 
  public void AjoutFilier(String filier,int group,int nbrElve){
     glossaireFilier.addElement(new Classe(filier, group, nbrElve));
  }

  //Chercher un etudiant
  public Etudiant Recherche(int mtr){
    int i;
  boolean chercher=false;
  int mtrElve=mtr;
  Etudiant eleve= new Etudiant();
  for (i=0;i<glossaireEtudiant.size();i++)
  {
    if ((((Etudiant) glossaireEtudiant.elementAt(i)).getMatricle())==mtrElve)
    {
    eleve=((Etudiant) glossaireEtudiant.elementAt(i));
    chercher=true;
     break;
    }

  }
   if (chercher==true)
   {
    return eleve;
   }
   else
   return null;
  }
  //Supprimer un etudiant
  public boolean Suppression(int mtr ){
    int i;
  boolean chercher=false;
  int  mt=mtr ;
  for (i=0;i<glossaireEtudiant.size();i++)
  {
    if (((Etudiant) glossaireEtudiant.elementAt(i)).getMatricle()==mt)
    {
    chercher=true;
    break;
    }

  }
   if (chercher==true)
   {
      glossaireEtudiant.remove(i);
      return true;
   }
   else return false;
  }
  //Afficher la classe 
  public Vector  Afficher_Classe(String  Nom ,int grp){
 Vector listEtudiant= new Vector();
  String filier=Nom;
  int group=grp;
  int i=0;
  for ( i=0;i<glossaireEtudiant.size();i++)
  {
    if ((((Etudiant) glossaireEtudiant.elementAt(i)).getFilier()).equals(filier) && ((Etudiant) glossaireEtudiant.elementAt(i)).getGroup()==group)
    {
    listEtudiant.addElement(glossaireEtudiant.elementAt(i));
    }
  }
  return listEtudiant;
  }

      public void setFilier(String Filier ){
	 m_sFilier=Filier;
      }

      public String getFilier(){
	return m_sFilier;
      }

      public void setGroup(char Group ){
	 m_cGroup=Group;
      }

      public int getGroup(){
	return m_cGroup;
  }
  //Trie Classe
      
public Vector Trier_Classe(String filier,int group,int choix ){

int i,k, j, posmmax ;
double max;
Object objtmp=null;
Vector glossairetmp= new Vector();
String   Nom_de_filier=filier;
int N_group=group;
int method= choix;
for(k=0;k<glossaireEtudiant.size();k++)
{
  if((((Etudiant) glossaireEtudiant.elementAt(k)).getFilier()).equals(Nom_de_filier) && ((Etudiant) glossaireEtudiant.elementAt(k)).getGroup()==N_group)
  {
  glossairetmp.addElement(glossaireEtudiant.elementAt(k));
  }
}
switch(choix)
{
  case 1:


for(i=0;i<glossairetmp.size()-1;i++)
{
      max=((Etudiant) glossairetmp.elementAt(i)).Calcule_Moyenne();
       objtmp= (Etudiant) glossairetmp.elementAt(i);
       posmmax=i;
       for(j=i+1;j<glossairetmp.size();j++)
       {
         if((((Etudiant) glossairetmp.elementAt(j)).Calcule_Moyenne())> max)
         {
         objtmp= (Etudiant) glossairetmp.elementAt(j);
         max=((Etudiant) glossairetmp.elementAt(j)).Calcule_Moyenne();
         posmmax=j;
         }
       }
       glossairetmp.setElementAt(glossairetmp.elementAt(i),posmmax);
       glossairetmp.setElementAt(objtmp,i);
}

break;
case 2:
  String nom;
  int posnom=0;
  for(i=0;i<glossairetmp.size()-1;i++)
{
       nom=((Etudiant) glossairetmp.elementAt(i)).getNom();
       objtmp= (Etudiant) glossairetmp.elementAt(i);
       posnom=i;
       for(j=i+1;j<glossairetmp.size();j++)
       {
         if((((Etudiant) glossairetmp.elementAt(j)).getNom()).compareTo(nom)<0)
         {
         objtmp= (Etudiant) glossairetmp.elementAt(j);
         nom=((Etudiant) glossairetmp.elementAt(j)).getNom();
         posnom=j;
         }
       }
       glossairetmp.setElementAt(glossairetmp.elementAt(i),posnom);
       glossairetmp.setElementAt(objtmp,i);
}
}
return glossairetmp;
}


}